Background
This is my go-to template for work projects. I wanted a notebook with some minimal slide functionality without having to separate/commit whole hog to a separate ioslides output or whatever. Helps maintain flow.
Don’t want a dependency of a theme package, just plain ol HTML/CSS/JS
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Plan
Flowchart
htmltools::HTML('
<div class="mermaid">
graph LR
A --- B
B-->C[fa:fa-ban forbidden]
B-->D(fa:fa-spinner);
</div>
')
graph LR
A --- B
B-->C[fa:fa-ban forbidden]
B-->D(fa:fa-spinner);
User Journey
htmltools::HTML('
<div class="mermaid">
journey
title My working day
section Go to work
Make tea: 5: Me
Go upstairs: 3: Me
Do work: 1: Me, Cat
section Go home
Go downstairs: 5: Me
Sit down: 5: Me
</div>
')
journey
title My working day
section Go to work
Make tea: 5: Me
Go upstairs: 3: Me
Do work: 1: Me, Cat
section Go home
Go downstairs: 5: Me
Sit down: 5: Me
Sequence Diagram
htmltools::HTML('
<div class="mermaid">
sequenceDiagram
participant John
participant Alice
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
</div>
')
sequenceDiagram
participant John
participant Alice
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Gantt
Doesn’t work
htmltools::HTML('
<div class="mermaid">
gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
A task :a1, 2014-01-01, 30d
Another task :after a1 , 20d
section Another
Task in sec :2014-01-12 , 12d
another task : 24d
</div>
')
gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
A task :a1, 2014-01-01, 30d
Another task :after a1 , 20d
section Another
Task in sec :2014-01-12 , 12d
another task : 24d
Work
Can’t tabset these
a
knitr::opts_chunk$set(echo = TRUE)
t(t(letters))
## [,1]
## [1,] "a"
## [2,] "b"
## [3,] "c"
## [4,] "d"
## [5,] "e"
## [6,] "f"
## [7,] "g"
## [8,] "h"
## [9,] "i"
## [10,] "j"
## [11,] "k"
## [12,] "l"
## [13,] "m"
## [14,] "n"
## [15,] "o"
## [16,] "p"
## [17,] "q"
## [18,] "r"
## [19,] "s"
## [20,] "t"
## [21,] "u"
## [22,] "v"
## [23,] "w"
## [24,] "x"
## [25,] "y"
## [26,] "z"
b
knitr::opts_chunk$set(echo = TRUE)
letters
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q"
## [18] "r" "s" "t" "u" "v" "w" "x" "y" "z"
Findings/Recommendations
This section can function as slides if there’s not too much to show. To group slides within slides, see Slides
Except on Mars!

Slides
Can’t link to these
1
As you can see here, the results speak for themselves.
2
As you can see here, the results speak for themselves.
3
As you can see here, the results speak for themselves.
Appendix
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
R Session Info
sessionInfo()
## R version 3.5.1 (2018-07-02)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18362)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=English_United States.1252
## [2] LC_CTYPE=English_United States.1252
## [3] LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] dplyr_0.8.5 plotly_4.8.0 ggplot2_3.1.0
##
## loaded via a namespace (and not attached):
## [1] Rcpp_1.0.4 later_1.0.0 pillar_1.3.1
## [4] compiler_3.5.1 plyr_1.8.4 base64enc_0.1-3
## [7] tools_3.5.1 digest_0.6.25 viridisLite_0.3.0
## [10] jsonlite_1.5 evaluate_0.14 tibble_2.0.1
## [13] gtable_0.2.0 pkgconfig_2.0.2 rlang_0.4.5
## [16] shiny_1.4.0.2 crosstalk_1.0.0 yaml_2.2.0
## [19] xfun_0.8 fastmap_1.0.1 withr_2.1.2
## [22] stringr_1.4.0 httr_1.4.0 knitr_1.23
## [25] htmlwidgets_1.5.1 grid_3.5.1 tidyselect_0.2.5
## [28] glue_1.3.0 data.table_1.12.2 R6_2.3.0
## [31] rmarkdown_1.13 tidyr_0.8.2 purrr_0.2.5
## [34] magrittr_1.5 promises_1.1.0 scales_1.0.0
## [37] htmltools_0.4.0.9003 assertthat_0.2.0 xtable_1.8-3
## [40] mime_0.6 colorspace_1.4-0 httpuv_1.5.2
## [43] labeling_0.3 stringi_1.2.4 lazyeval_0.2.1
## [46] munsell_0.5.0 crayon_1.3.4
LS0tDQpwYXJhbXM6DQogIGppcmE6ICJIQlJBLTk5Ig0KICBnaXRodWI6ICJnaXRodWIuY29tIg0KICB0aXRsZTogIkFyZSBkb2N1bWVudCBoZWFkZXJzIGluIHRoZSBmb3JtIG9mIHF1ZXN0aW9ucyBtb3JlIGVuZ2FnaW5nIHRoYW4gc3RhdGVtZW50cz8iDQogIGxvZ29fdXJsOiAiaHR0cHM6Ly9oYnIub3JnL3Jlc291cmNlcy9jc3MvaW1hZ2VzL0hCUl9sb2dvX2JsYWNrLnN2ZyINCiAgYWNjZW50X2NvbG9yOiAiI2M4MjUwMiINCnRpdGxlOiAnYHIgcGFyYW1zJHRpdGxlYCcNCmF1dGhvcjogJ2ByIFN5cy5pbmZvKClbN11gJw0KZGF0ZTogJ2ByIFN5cy50aW1lKClgJw0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAga2VlcF9tZDogdHJ1ZQ0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogDQogICAgICBjb2xsYXBzZWQ6IGZhbHNlDQogICAgICBzbW9vdGhfc2Nyb2xsOiBmYWxzZQ0KLS0tDQoNCjxzdHlsZT4NCkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9U291cmNlK1NhbnMrUHJvJmRpc3BsYXk9c3dhcCcpOw0KDQpib2R5IHtmb250LWZhbWlseTogIlNvdXJjZSBTYW5zIFBybyIsIHNhbnMtc2VyaWYgIWltcG9ydGFudDt9DQpoMSwgaDIsIGgzLCBoNCwgaDUge2ZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgcGFkZGluZy10b3A6IDJyZW07fQ0KYSB7Y29sb3I6IGByIHBhcmFtcyRhY2NlbnRfY29sb3JgfQ0KLmF1dGhvciwgLmRhdGUge3BhZGRpbmctdG9wOiAxcmVtO30NCi5tYWluLWNvbnRhaW5lcnttYXgtd2lkdGg6IDg1JSAhaW1wb3J0YW50O30NCg0KLyogLS0tLSBUT0MgLS0tLSAqLw0KLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUsIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzLCAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogYHIgcGFyYW1zJGFjY2VudF9jb2xvcmA7IGJvcmRlci1jb2xvcjogYHIgcGFyYW1zJGFjY2VudF9jb2xvcmA7IG1hcmdpbi1sZWZ0OiAtMnJlbTsgcGFkZGluZy1sZWZ0OiAycmVtO30NCi50b2NpZnksIC5uYXYtdGFicyA+IGxpID4gYSB7d2Via2l0LWJvcmRlci1yYWRpdXM6IHVuc2V0OyBtb3otYm9yZGVyLXJhZGl1czogdW5zZXQ7IGJvcmRlci1yYWRpdXM6IHVuc2V0O30NCi50b2NpZnk6OmJlZm9yZSB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGByIHBhcmFtcyRsb2dvX3VybGApOyBwYWRkaW5nOiAycmVtOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGNvbnRlbnQ6ICIiOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1zaXplOiAxNTBweDsgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O30NCi50b2NpZnk6bnRoLWNoaWxkKDEpIHVsOm50aC1jaGlsZCgxKTo6YmVmb3JlIHtjb250ZW50OiAiYHIgcGFyYW1zJHRpdGxlYCI7IHBhZGRpbmctbGVmdDogLjI1cmVtOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7fQ0KLnRvY2lmeSB1bCBsaTpmaXJzdC1vZi10eXBlIHttYXJnaW4tdG9wOiAxcmVtO30NCi50b2NpZnkge3BhZGRpbmctdG9wOiAycmVtOyBwYWRkaW5nLWJvdHRvbTogMnJlbTt9DQoudG9jaWZ5LWhlYWRlciB7dGV4dC1pbmRlbnQ6IHVuc2V0ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDogMnJlbTt9DQp1bC50b2NpZnktaGVhZGVyIHtwYWRkaW5nLWxlZnQ6IDFyZW07fQ0KI3RvY2lmeS1oZWFkZXIwIHtwYWRkaW5nLXRvcDogMnJlbTt9DQoubmF2LXRhYnMge3BhZGRpbmctdG9wOiAxcmVtO30NCg0KLyogZGlhZ3JhbW1lci9tZXJtYWlkICovDQovKiAuRGlhZ3JhbW1lUiB7aGVpZ2h0OiB1bnNldCAhaW1wb3J0YW50O30NCi5tZXJtYWlkIC5ub2RlIHJlY3QsIC5ub2RlIGNpcmNsZSwgLm5vZGUgZWxsaXBzZSwgLm5vZGUgcG9seWdvbiB7ZmlsbDogI2ViZjBmMDsgc3Ryb2tlOiAjYWJhZmIwO30NCiovDQoNCnN1bW1hcnkge3BhZGRpbmc6IDFyZW07IGJvcmRlcjogMXB4IHNvbGlkICNhYmFmYjA7fQ0KDQovKiBzbGlkZSBzdHVmZiAqLw0KLm5vc2VsZWN0IHsNCiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOyAvKiBpT1MgU2FmYXJpICovDQogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogU2FmYXJpICovDQogICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsgLyogS29ucXVlcm9yIEhUTUwgKi8NCiAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOyAvKiBGaXJlZm94ICovDQogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsgLyogSW50ZXJuZXQgRXhwbG9yZXIvRWRnZSAqLw0KICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7IC8qIE5vbi1wcmVmaXhlZCB2ZXJzaW9uLCBjdXJyZW50bHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgYnkgQ2hyb21lIGFuZCBPcGVyYSAqLw0KfQ0KDQoubmF2LWFycm93IHsgZm9udC1zaXplOiAzMHB4OyBiYWNrZ3JvdW5kOiAjQzgyNTA1OyBjb2xvcjogd2hpdGU7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogYmxvY2s7IHRleHQtYWxpZ246IGNlbnRlciB9DQoNCi5maXhlZC1oZWlnaHQgeyBtYXgtaGVpZ2h0OiA0MDBweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bzsgfQ0KDQo8L3N0eWxlPg0KDQo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbWVybWFpZC84LjUuMS9tZXJtYWlkLm1pbi5qcyI+PC9zY3JpcHQ+DQoNCjxzY3JpcHQ+DQpmdW5jdGlvbiBnb0JhY2t3YXJkKCkgew0KICBsZXQgcHJldmlvdXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50YWJuYXYgPiB1bC5uYXYgPiBsaSIpKS5pbmRleE9mKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWJuYXYgPiB1bC5uYXYgPiBsaS5hY3RpdmUiKSktMTsNCiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRhYm5hdiA+IHVsLm5hdiA+IGxpID4gYSIpW3ByZXZpb3VzXS5jbGljaygpDQp9Ow0KDQpmdW5jdGlvbiBnb0ZvcndhcmQoKSB7DQogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWJuYXYgPiB1bC5uYXYgPiBsaS5hY3RpdmUgKyBsaSA+IGEiKS5jbGljaygpOw0KfTsNCjwvc2NyaXB0Pg0KDQoNCiMjIEJhY2tncm91bmQNCg0KVGhpcyBpcyBteSBnby10byB0ZW1wbGF0ZSBmb3Igd29yayBwcm9qZWN0cy4gSSB3YW50ZWQgYSBub3RlYm9vayB3aXRoIHNvbWUgbWluaW1hbCBzbGlkZSBmdW5jdGlvbmFsaXR5IHdpdGhvdXQgaGF2aW5nIHRvIHNlcGFyYXRlL2NvbW1pdCB3aG9sZSBob2cgdG8gYSBzZXBhcmF0ZSBpb3NsaWRlcyBvdXRwdXQgb3Igd2hhdGV2ZXIuIEhlbHBzIG1haW50YWluIGZsb3cuIA0KDQpEb24ndCB3YW50IGEgZGVwZW5kZW5jeSBvZiBhIHRoZW1lIHBhY2thZ2UsIGp1c3QgcGxhaW4gb2wgSFRNTC9DU1MvSlMNCg0KPiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIFteMV0NCg0KDQpbXjFdOiBmb290bm90ZQ0KDQojIyMgUGxhbiB7LnRhYnNldH0NCg0KIyMjIyBGbG93Y2hhcnQNCmBgYHtyLCByZXN1bHRzPSJhc2lzIn0NCmh0bWx0b29sczo6SFRNTCgnDQogIDxkaXYgY2xhc3M9Im1lcm1haWQiPg0KICBncmFwaCBMUg0KICAgICAgQSAtLS0gQg0KICAgICAgQi0tPkNbZmE6ZmEtYmFuIGZvcmJpZGRlbl0NCiAgICAgIEItLT5EKGZhOmZhLXNwaW5uZXIpOw0KICA8L2Rpdj4NCiAgJykNCmBgYA0KDQoNCiMjIyMgVXNlciBKb3VybmV5IA0KYGBge3IsIHJlc3VsdHM9ImFzaXMifQ0KaHRtbHRvb2xzOjpIVE1MKCcNCiAgPGRpdiBjbGFzcz0ibWVybWFpZCI+DQpqb3VybmV5DQogICAgdGl0bGUgTXkgd29ya2luZyBkYXkNCiAgICBzZWN0aW9uIEdvIHRvIHdvcmsNCiAgICAgIE1ha2UgdGVhOiA1OiBNZQ0KICAgICAgR28gdXBzdGFpcnM6IDM6IE1lDQogICAgICBEbyB3b3JrOiAxOiBNZSwgQ2F0DQogICAgc2VjdGlvbiBHbyBob21lDQogICAgICBHbyBkb3duc3RhaXJzOiA1OiBNZQ0KICAgICAgU2l0IGRvd246IDU6IE1lDQogIDwvZGl2Pg0KICAnKQ0KYGBgDQoNCiMjIyMgU2VxdWVuY2UgRGlhZ3JhbQ0KYGBge3IsIHJlc3VsdHM9ImFzaXMifQ0KaHRtbHRvb2xzOjpIVE1MKCcNCiAgPGRpdiBjbGFzcz0ibWVybWFpZCI+DQpzZXF1ZW5jZURpYWdyYW0NCiAgICBwYXJ0aWNpcGFudCBKb2huDQogICAgcGFydGljaXBhbnQgQWxpY2UNCiAgICBBbGljZS0+PkpvaG46IEhlbGxvIEpvaG4sIGhvdyBhcmUgeW91Pw0KICAgIEpvaG4tLT4+QWxpY2U6IEdyZWF0IQ0KICA8L2Rpdj4NCiAgJykNCmBgYA0KDQojIyMjIEdhbnR0DQpEb2Vzbid0IHdvcmsNCmBgYHtyLCByZXN1bHRzPSJhc2lzIn0NCmh0bWx0b29sczo6SFRNTCgnDQogIDxkaXYgY2xhc3M9Im1lcm1haWQiPg0KZ2FudHQNCiAgICB0aXRsZSBBIEdhbnR0IERpYWdyYW0NCiAgICBkYXRlRm9ybWF0ICBZWVlZLU1NLUREDQogICAgc2VjdGlvbiBTZWN0aW9uDQogICAgQSB0YXNrICAgICAgICAgICA6YTEsIDIwMTQtMDEtMDEsIDMwZA0KICAgIEFub3RoZXIgdGFzayAgICAgOmFmdGVyIGExICAsIDIwZA0KICAgIHNlY3Rpb24gQW5vdGhlcg0KICAgIFRhc2sgaW4gc2VjICAgICAgOjIwMTQtMDEtMTIgICwgMTJkDQogICAgYW5vdGhlciB0YXNrICAgICAgOiAyNGQNCiAgPC9kaXY+DQogICcpDQpgYGANCg0KDQojIyBXb3JrIHsudGFic2V0fQ0KQ2FuJ3QgdGFic2V0IHRoZXNlDQoNCiMjIyBhIHsuZml4ZWQtaGVpZ2h0fQ0KYGBge3J9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQp0KHQobGV0dGVycykpDQpgYGANCg0KIyMjIGIgey5maXhlZC1oZWlnaHR9DQpgYGB7cn0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmxldHRlcnMNCmBgYA0KDQoNCiMjIEZpbmRpbmdzL1JlY29tbWVuZGF0aW9ucyB7LnRhYnNldH0NClRoaXMgc2VjdGlvbiBjYW4gZnVuY3Rpb24gYXMgc2xpZGVzIGlmIHRoZXJlJ3Mgbm90IHRvbyBtdWNoIHRvIHNob3cuIFRvIGdyb3VwIHNsaWRlcyB3aXRoaW4gc2xpZGVzLCBzZWUgU2xpZGVzDQoNCiMjIyBSZXZlbnVlIGlzIHVwIQ0KDQpgYGB7ciBjYXJzLCBjb2xzLnByaW50ID0gMywgcm93cy5wcmludCA9IDV9DQptdGNhcnMNCmBgYA0KDQojIyMgRXhjZXB0IG9uIE1hcnMhDQoNCmBgYHtyIHByZXNzdXJlLCBlY2hvPUZBTFNFLCBvdXQud2lkdGg9IjgwJSJ9DQpwbG90KHByZXNzdXJlKQ0KYGBgDQoNCg0KIyMjIFNsaWRlcyB7LnRhYnNldCAudGFibmF2fQ0KQ2FuJ3QgbGluayB0byB0aGVzZQ0KDQo8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJSAhaW1wb3J0YW50OyI+DQo8c3BhbiBjbGFzcz0ibmF2LWFycm93IG5vc2VsZWN0IiBzdHlsZT0iZmxvYXQ6bGVmdDsgd2lkdGg6IDUwJTsiIG9uY2xpY2s9ImdvQmFja3dhcmQoKSI+PDwvc3Bhbj4NCjxzcGFuIGNsYXNzPSJuYXYtYXJyb3cgbm9zZWxlY3QiIG9uY2xpY2s9ImdvRm9yd2FyZCgpIj4+PC9zcGFuPg0KPC9kaXY+DQoNCiMjIyMgYHIgbiA8LSAxOyBuYCANCkFzIHlvdSBjYW4gc2VlIGhlcmUsIHRoZSByZXN1bHRzIHNwZWFrIGZvciB0aGVtc2VsdmVzLiANCmBgYHtyIHNsaWRlIHNldHVwLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeShwbG90bHkpOyBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KGRwbHlyKTsga25pdHI6Om9wdHNfY2h1bmskc2V0KG91dC53aWR0aCA9ICIxMDAlIikNCmRhdGEuZnJhbWUoYT0xOjEwLCBiPXNhbXBsZSgxOjEwMCwgMTApKSAlPiUgeyBnZ3Bsb3QoLiwgYWVzKHg9YSwgeT1iKSkgKyBnZW9tX3BvaW50KCl9ICU+JSBnZ3Bsb3RseSguKQ0KYGBgDQoNCiMjIyMgYHIgbiA8LSBuKzE7IG5gDQpBcyB5b3UgY2FuIHNlZSBoZXJlLCB0aGUgcmVzdWx0cyBzcGVhayBmb3IgdGhlbXNlbHZlcy4gDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KZGF0YS5mcmFtZShhPTE6MTAsIGI9c2FtcGxlKDE6MTAwLCAxMCkpICU+JSB7IGdncGxvdCguLCBhZXMoeD1hLCB5PWIpKSArIGdlb21fcG9pbnQoKX0gJT4lIGdncGxvdGx5KC4pDQpgYGANCg0KIyMjIyBgciBuIDwtIG4rMTsgbmANCkFzIHlvdSBjYW4gc2VlIGhlcmUsIHRoZSByZXN1bHRzIHNwZWFrIGZvciB0aGVtc2VsdmVzLiANCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpkYXRhLmZyYW1lKGE9MToxMCwgYj1zYW1wbGUoMToxMDAsIDEwKSkgJT4lIHsgZ2dwbG90KC4sIGFlcyh4PWEsIHk9YikpICsgZ2VvbV9wb2ludCgpfSAlPiUgZ2dwbG90bHkoLikNCmBgYA0KDQoNCi0tLQ0KDQojIyBBcHBlbmRpeA0KDQpUaGlzIGlzIGFuIFIgTWFya2Rvd24gZG9jdW1lbnQuIE1hcmtkb3duIGlzIGEgc2ltcGxlIGZvcm1hdHRpbmcgc3ludGF4IGZvciBhdXRob3JpbmcgSFRNTCwgUERGLCBhbmQgTVMgV29yZCBkb2N1bWVudHMuIEZvciBtb3JlIGRldGFpbHMgb24gdXNpbmcgUiBNYXJrZG93biBzZWUgPGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20+Lg0KDQo8ZGV0YWlscz48c3VtbWFyeT5SIFNlc3Npb24gSW5mbzwvc3VtbWFyeT4NCg0KYGBge3J9DQpzZXNzaW9uSW5mbygpDQpgYGANCg0KPC9kZXRhaWxzPg0KDQo8c3R5bGU+DQouZm9vdG5vdGVzIGhyIHtkaXNwbGF5OiBub25lO30NCjwvc3R5bGU+DQoNCiMjIEZvb3Rub3Rlcw0KDQo8c2NyaXB0Pg0KICAgIHZhciBjb25maWcgPSB7DQogICAgICAgIHN0YXJ0T25Mb2FkOnRydWUsDQogICAgICAgIGZsb3djaGFydDp7DQogICAgICAgICAgICB1c2VNYXhXaWR0aDpmYWxzZSwNCiAgICAgICAgICAgIGh0bWxMYWJlbHM6dHJ1ZQ0KICAgICAgICB9DQogICAgfTsNCiAgICBtZXJtYWlkLmluaXRpYWxpemUoY29uZmlnKTsNCjwvc2NyaXB0Pg0KDQo=